package com.mkx.infrastructure.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.mkx.infrastructure.entity.UserEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 用户Mapper接口
 * 继承MyBatis-Plus的BaseMapper，提供基本CRUD操作
 */
@Mapper
public interface UserMapper extends BaseMapper<UserEntity> {
    
    /**
     * 根据用户名查询用户
     * @param username 用户名
     * @return 用户实体
     */
    UserEntity selectByUsername(@Param("username") String username);
    
    /**
     * 根据邮箱查询用户
     * @param email 邮箱
     * @return 用户实体
     */
    UserEntity selectByEmail(@Param("email") String email);
    
    /**
     * 根据手机号查询用户
     * @param phone 手机号
     * @return 用户实体
     */
    UserEntity selectByPhone(@Param("phone") String phone);
    
    /**
     * 分页查询用户
     * @param page 分页参数
     * @return 用户分页结果
     */
    IPage<UserEntity> selectPageUsers(IPage<UserEntity> page);
    
    /**
     * 检查用户名是否存在
     * @param username 用户名
     * @return 存在数量
     */
    int existsByUsername(@Param("username") String username);
    
    /**
     * 检查邮箱是否存在
     * @param email 邮箱
     * @return 存在数量
     */
    int existsByEmail(@Param("email") String email);
    
    /**
     * 检查手机号是否存在
     * @param phone 手机号
     * @return 存在数量
     */
    int existsByPhone(@Param("phone") String phone);
}